/** * editAction * * Edit content * */ public function editAction() { // Get authentication $auth = Zend_Auth::getInstance(); // If user has identity if ($auth->hasIdentity()) { // Get requests $params = $this->getRequest()->getParams(); // Get session data $previewSession = new Zend_Session_Namespace('contentpreview'); // If preview $backFromPreview = isset($previewSession->backFromPreview) ? $previewSession->backFromPreview : 0; $preview = isset($params['preview']) ? 1 : 0; if ($preview) { $previewSession->unsetAll(); $previewSession->previewData = $params; $backToUrl = $this->getRequest()->getRequestUri(); $previewSession->backToUrl = $backToUrl; $url = $this->_urlHelper->url(array('controller' => 'content', 'action' => 'preview', 'language' => $this->view->language), 'lang_default', true); $this->_redirect($url); } // Get content type $contentId = isset($params['content_id']) ? $params['content_id'] : 0; $userId = $auth->getIdentity()->user_id; $cntHasUsr = new Default_Model_ContentHasUser(); $userIsOwner = $cntHasUsr->contentHasOwner($userId, $contentId); if ($userIsOwner) { if ($contentId != 0) { $content = new Default_Model_Content(); $data = $content->getDataAsSimpleArray($contentId); // Creating array for form data $formData = array(); // Adding content type to form $formData['content_type'] = $data['id_cty_cnt']; // Adding content id to form $formData['content_id'] = $contentId; $formData['content_header'] = stripslashes($data['title_cnt']); $modelCntHasTag = new Default_Model_ContentHasTag(); $keywords = $modelCntHasTag->getContentTags($data['id_cnt']); $tags = ""; $tagCount = count($keywords); for ($i = 0; $i < $tagCount; $i++) { $tags .= $keywords[$i]['name_tag']; if ($i != $tagCount - 1) { $tags .= ', '; } } $formData['content_keywords'] = stripslashes($tags); $formData['content_textlead'] = stripslashes($data['lead_cnt']); $formData['content_text'] = stripslashes($data['body_cnt']); $modelCntHasRec = new Default_Model_ContentHasRelatedCompany(); $relComps = $modelCntHasRec->getContentRelComps($data['id_cnt']); $recs = ""; $recCount = count($relComps); for ($i = 0; $i < $recCount; $i++) { $recs .= $relComps[$i]['name_rec']; if ($i != $recCount - 1) { $recs .= ', '; } } $formData['content_related_companies'] = stripslashes($recs); $formData['content_research'] = $data['research_question_cnt']; $formData['content_opportunity'] = $data['opportunity_cnt']; $formData['content_threat'] = $data['threat_cnt']; $formData['content_solution'] = $data['solution_cnt']; $formData['published_cnt'] = $data['published_cnt']; $formData['content_references'] = $data['references_cnt']; $languages = new Default_Model_Languages(); $idLngInd = $languages->getLangIdByLangName($this->view->language); $allLanguages = $languages->getAllNamesAndIds(); $formData['languages'] = array(); $formData['languages'][0] = $this->view->translate("content-add-select-language"); foreach ($allLanguages as $lng) { $formData['languages'][$lng['id_lng']] = $lng['name_lng']; } $finfoClasses = new Default_Model_FutureinfoClasses(); $allClasses = $finfoClasses->getAllNamesAndIds(); $formData['FutureinfoClasses'] = array(); $formData['FutureinfoClasses'][0] = $this->view->translate("content-add-select-finfo-classification"); foreach ($allClasses as $class) { $formData['FutureinfoClasses'][$class['id_fic']] = $class['name_fic']; } // Getting innovation types from the database $modelInnovationTypes = new Default_Model_InnovationTypes(); $innovationTypes = $modelInnovationTypes->getAllNamesAndIds(); // Getting the innovation type of the content $modelCntHasIvt = new Default_Model_ContentHasInnovationTypes(); $formData['selected_ivt'] = $modelCntHasIvt->getInnovationTypeIdOfContent($data['id_cnt']); // Adding all innovation types to form $formData['InnovationTypes'] = array(); $formData['InnovationTypes'][0] = $this->view->translate("content-add-select-innovation"); foreach ($innovationTypes as $ivt) { $formData['InnovationTypes'][$ivt['id_ivt']] = $ivt['name_ivt']; } // end foreach if (empty($formData['InnovationTypes'])) { $formData['InnovationTypes'] = array(0 => '----'); } $languages = new Default_Model_Languages(); $idLngInd = $languages->getLangIdByLangName($this->view->language); // Getting language of the content $formData['content_language'] = $languages->getLangIdByLangName($data['language_cnt']); // Getting the industry of the content $modelCntHasInd = new Default_Model_ContentHasIndustries(); $cntInd = $modelCntHasInd->getIndustryIdOfContent($data['id_cnt']); // Getting industries from the database $modelIndustries = new Default_Model_Industries(); $industries = $modelIndustries->getNamesAndIdsById(0, $idLngInd); // Getting all industries of the content $industryIds = $modelIndustries->getAllContentIndustryIds($cntInd); $formData['industryIds'] = $industryIds; // Adding all industries of the content to form $formData['selected_industry'] = $industryIds[0]; $formData['selected_division'] = $industryIds[1]; $formData['selected_group'] = $industryIds[2]; $formData['selected_class'] = $industryIds[3]; // Adding all industries to form $formData['Industries'] = array(); $formData['Industries'][0] = $this->view->translate("content-add-select-industry"); foreach ($industries as $ind) { $formData['Industries'][$ind['id_ind']] = $ind['name_ind']; } // end foreach if (empty($formData['Industries'])) { $formData['Industries'] = array(0 => '----'); } // Adding all divisions to form $formData['Divisions'] = array(); $formData['Divisions'][0] = $this->view->translate("content-add-select-division-no-industry"); if ($industryIds[0] != 0) { $divisions = $modelIndustries->getNamesAndIdsById($industryIds[0], $idLngInd); foreach ($divisions as $div) { $formData['Divisions'][$div['id_ind']] = $div['name_ind']; } // end foreach } // Adding all groups to form $formData['Groups'] = array(); $formData['Groups'][0] = $this->view->translate("content-add-select-group-no-division"); if ($industryIds[1] != 0) { $groups = $modelIndustries->getNamesAndIdsById($industryIds[1], $idLngInd); foreach ($groups as $grp) { $formData['Groups'][$grp['id_ind']] = $grp['name_ind']; } // end foreach } $formData['Classes'] = array(); $formData['Classes'][0] = $this->view->translate("content-add-select-class-no-group"); // If there's no group selected if ($industryIds[2] != 0) { $classes = $modelIndustries->getNamesAndIdsById($industryIds[2], $idLngInd); foreach ($classes as $class) { $formData['Classes'][$class['id_ind']] = $class['name_ind']; } // end foreach } $modelContentTypes = new Default_Model_ContentTypes(); $contentType = $modelContentTypes->getTypeById($data['id_cty_cnt']); $this->view->short_contenttype = $contentType; $title_cnt = $content->getContentHeaderByContentId($data['id_cnt']); $this->view->contentHeader = $title_cnt; // Get contents filenames from database $filesModel = new Default_Model_Files(); $filenames = $filesModel->getFilenamesByCntId($contentId); $formData['filenames'] = $filenames; // Form for content adding $form = new Default_Form_EditContentForm(null, $formData, $contentId, $contentType, $this->view->language); $form->populate($formData); $this->view->form = $form; $url = $this->_urlHelper->url(array('controller' => 'msg', 'action' => 'index', 'language' => $this->view->language), 'lang_default', true); // populate form if ($backFromPreview) { // Get previewdata and populate it to form $previewData = $previewSession->previewData; $form->populate($previewData); // Delete session data $previewSession->unsetAll(); } // If posted if ($this->getRequest()->isPost()) { // Get content data $data = $this->getRequest()->getPost(); // Content id $data['content_id'] = $contentId; // If form data is valid, handle database insertions $validForm = $form->isValid($data) ? true : isset($data['content_save']) && $data['content_save'] != ''; if ($validForm) { // If form data is going to be published if (isset($data['content_publish']) && $data['content_publish'] == 1) { $data['publish'] = 1; $message_error = 'content-publish-not-successful'; } elseif (isset($data['content_save']) && $data['content_save'] == 1) { $data['publish'] = 0; $message_error = 'content-save-not-successful'; } // Content keywords /* FIXED: split() is deprecated in PHP 5.3.0 -> and removed in * PHP 6.0, so changed to explode(). Also trim(array) doesn't * trim array values, so this is done with foreach now. */ $keywords = array(); foreach (explode(',', $data['content_keywords']) as $keyword) { if (trim($keyword) != "") { $keywords[] = strip_tags(trim($keyword)); } } $data['content_keywords'] = array_unique($keywords); // Related companies $relatedCompanies = array(); foreach (explode(',', $data['content_related_companies']) as $relatedCompany) { if (trim($relatedCompany) != "") { $relatedCompanies[] = strip_tags(trim($relatedCompany)); } } $data['content_related_companies'] = array_unique($relatedCompanies); // Get user id $data['User']['id_usr'] = $auth->getIdentity()->user_id; /* if($data['content_division'] == 0) { $data['content_industry_id'] = $data['content_industry']; } elseif($data['content_group'] == 0) { $data['content_industry_id'] = $data['content_division']; } elseif($data['content_class'] == 0) { $data['content_industry_id'] = $data['content_group']; } elseif($data['content_class'] != 0) { $data['content_industry_id'] = $data['content_class']; }*/ if ($data['content_language'] == 0) { $data['content_language'] = $this->view->language; } else { $data['content_language'] = $languages->getLangNameByLangId($data['content_language']); } //echo "<pre>"; print_r($data); echo "</pre>"; die(); $data['files'] = $_FILES['content_file_upload']; // Edit content $content = new Default_Model_Content(); $oldData = $content->getContentRow($contentId); $edit = $content->editContent($data); $url = $this->_urlHelper->url(array('controller' => 'msg', 'action' => 'index', 'language' => $this->view->language), 'lang_default', true); if ($edit) { //$favourite = new Default_Model_UserHasFavourites(); //$favouriteEdited = $favourite->setFavouriteModifiedTrue($edit); if ($oldData['published_cnt'] == 1 || isset($data['content_publish']) && $data['content_publish'] == 1) { $url = $this->_urlHelper->url(array('content_id' => $edit, 'language' => $this->view->language), 'content_shortview', true); $this->_redirect($url); } else { /*$message_ok = $this->view->translate('content-save-successful'); $message_ok .= ' ('.$content->getContentHeaderByContentId($edit).')'; $message_ok .= '<br /><br />' . $this->view->translate('content-save-successful2'); $userpage = $this->_urlHelper->url(array('controller' => 'account', 'action' => 'view', 'user' => $auth->getIdentity()->username, 'language' => $this->view->language), 'lang_default', true); $message_ok .= ' <a href="'.$userpage.'">'.$this->view->translate('content-save-successful3').'</a>'; $message_ok .= ' ' . $this->view->translate('content-save-successful4'); $this->flash($message_ok, $url);*/ $url = $this->_urlHelper->url(array('controller' => 'account', 'action' => 'view', 'language' => $this->view->language, 'user' => $auth->getIdentity()->username), 'lang_default', true); $this->_redirect($url); } } else { $this->flash($message_error, $url); } } else { // What is this? //Zend_Debug::dump($form); die; } /* // Content keywords $keywords = split(', ', trim($data['content_keywords'])); $data['content_keywords'] = array_unique($keywords); if($data['content_group'] == 0) { $data['content_industry_id'] = $data['content_division']; } elseif($data['content_class'] == 0) { $data['content_industry_id'] = $data['content_group']; } elseif($data['content_class'] != 0) { $data['content_industry_id'] = $data['content_class']; } // Update the edited content to database $content = new Default_Model_Content(); if($content->editContent($data)) { $message = 'content-edit-successful'; } else { $message = 'content-edit-not-successful'; } $this->flash($message, $url);*/ } } else { $message = 'content-edit-no-id'; $this->flash($message, $url); } } else { $message = 'content-edit-not-owner'; $this->flash($message, $url); } } else { // If not logged, redirecting to system message page $message = 'content-edit-not-logged'; $this->flash($message, $url); } // end else }
/** * index page: Contains the content viewing functionality. * * @todo Implement group ownership user images and content links * @todo Include translation and content info for page title * @todo More from box should show ratings * @todo If not ajax "more from", at least separate to proper MVC * @todo Look over comment loading for data being fetched and not shown * @todo Comment rating, userpic (maybe not) * * @param id integer id of content to view * @param page integer (optional) Page number for paginator * @param count integer (optional) Count of content for paginator * @param rate integer (optional) Rating given by user */ function indexAction() { // get requests $request = $this->getRequest(); $params = $request->getParams(); $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); $absoluteBaseUrl = strtolower(trim(array_shift(explode('/', $_SERVER['SERVER_PROTOCOL'])))) . '://' . $_SERVER['HTTP_HOST'] . Zend_Controller_Front::getInstance()->getBaseUrl(); // get content id from params, if not set or invalid, send a message $id = (int) $params['content_id']; if ($id == 0) { $this->flash('content-not-found', $baseUrl . '/' . $this->view->language . '/msg/'); } // Get specific content data -- this could fail? Needs check? $contentModel = new Default_Model_Content(); $contentData = $contentModel->getDataAsSimpleArray($id); // Translate content data $this->gtranslate->setLangFrom($contentData['language_cnt']); $contentData = $this->gtranslate->translateContent($contentData); $filesModel = new Default_Model_Files(); $files = $filesModel->getFilenamesByCntId($id); // Get content owner id (groups to be implemented later) $contentHasUserModel = new Default_Model_ContentHasUser(); $owner = $contentHasUserModel->getContentOwners($id); $ownerId = $owner['id_usr']; // Get authentication $auth = Zend_Auth::getInstance(); if ($contentData['published_cnt'] == 0 && $auth->getIdentity()->user_id != $ownerId && !in_array("admin", $this->view->logged_user_roles)) { $this->flash('content-not-found', $baseUrl . '/' . $this->view->language . '/msg/'); } // get rating from params (if set) $rate = isset($params['rate']) ? $params['rate'] : "NONE"; // get favourite method, "add" or "remove" //$favouriteMethod = isset($params['favourite']) ? $params['favourite'] : "NONE"; // get page number and comments per page (if set) $page = isset($params['page']) ? $params['page'] : 1; $count = isset($params['count']) ? $params['count'] : 10; // turn commenting off by default $user_can_comment = false; // turn rating off by default $user_can_rate = false; // Comment model $comment = new Default_Model_Comments(); $parentId = isset($params['replyto']) ? $params['replyto'] : 0; // If user has identity if ($auth->hasIdentity() && $contentData['published_cnt'] == 1) { // enable comment form $user_can_comment = true; // enable rating if the content was not published by the user // (also used for flagging) if ($ownerId != $auth->getIdentity()->user_id) { $user_can_rate = true; } // generate comment form $comment_form = new Default_Form_CommentForm($parentId); // if there is something in POST if ($request->isPost()) { // Get comment form data $formData = $this->_request->getPost(); // Validate and save comment data if ($comment_form->isValid($formData)) { $user_id = $auth->getIdentity()->user_id; $comment->addComment($id, $user_id, $formData); $comment_form = new Default_Form_CommentForm($parentId); if ($user_id != $ownerId) { $user = new Default_Model_User(); $comment_sender = $user->getUserNameById($user_id); $Default_Model_privmsg = new Default_Model_PrivateMessages(); $data = array(); $data['privmsg_sender_id'] = 0; $data['privmsg_receiver_id'] = $ownerId; $data['privmsg_header'] = 'You have new comment!'; $data['privmsg_message'] = '<a href="' . $baseUrl . "/" . $this->view->language . '/account/view/user/' . $comment_sender . '">' . $comment_sender . '</a> commented your content <a href="' . $baseUrl . "/" . $this->view->language . '/view/' . $id . '">' . $contentData['title_cnt'] . '</a>'; $data['privmsg_email'] = ''; // Send email to contentowner about new comment // if its allowed $notificationsModel = new Default_Model_Notifications(); $notifications = $notificationsModel->getNotificationsById($ownerId); if (in_array('comment', $notifications)) { $emailNotification = new Oibs_Controller_Plugin_Email(); $emailNotification->setNotificationType('comment')->setSenderId($user_id)->setReceiverId($ownerId)->setParameter('URL', $absoluteBaseUrl . "/en")->setParameter('SENDER-NAME', $comment_sender)->setParameter('CONTENT-ID', $id)->setParameter('CONTENT-TITLE', $contentData['title_cnt'])->setParameter('COMMENT', $formData['comment_message']); if ($emailNotification->isValid()) { $emailNotification->send(); } else { //echo $emailNotification->getErrorMessage(); die; } } $Default_Model_privmsg->addMessage($data); } } // end if } // end if $this->view->comment_form = $comment_form; } // end if // get content type of the specific content viewed $contentTypesModel = new Default_Model_ContentTypes(); $contentType = $contentTypesModel->getTypeById($contentData['id_cty_cnt']); // Get content innovation type / industry / division / group / class // and send to view... somehow. // TO BE IMPLEMENTED // Get content owner data $userModel = new Default_Model_User(); $userData = $userModel->getSimpleUserDataById($ownerId); // get content owner picture ... to be implemented later $userImage = $userModel->getUserImageData($ownerId); // get other content from user.. function needs a looking-over! // Also it needs to be separated from this action so the MVC-is correct! $moreFromUser = $userModel->getUserContent($ownerId, 0, $id); // get related contents $relatedContents = $contentModel->getRelatedContents($id); // get (VIEWED) content views (returns a string directly) $contentViewsModel = new Default_Model_ContentViews(); if (!$this->alreadyViewed($id)) { $contentViewsModel->increaseViewCount($id); } $views = $contentViewsModel->getViewsByContentId($id); // get content rating (returns a string directly) $contentRatingsModel = new Default_Model_ContentRatings(); //$rating = $contentRatingsModel->getById($id); $rating = $contentRatingsModel->getPercentagesById($id); // $rate is gotten from params[], 1 and -1 are the only allowed if ($rate != "NONE" && ($rate == 1 || $rate == -1) && $auth->hasIdentity()) { if ($contentRatingsModel->addRating($id, $auth->getIdentity()->user_id, $rate)) { $this->view->savedRating = $rate; //$rating = $contentRatingsModel->getById($id); $rating = $contentRatingsModel->getPercentagesById($id); } else { $this->flash('rating-failed-msg', $baseUrl . '/en/msg/'); } } // get contents total favourites $userFavouritesModel = new Default_Model_UserHasFavourites(); $totalFavourites = $userFavouritesModel->getUsersCountByFavouriteContent($id); $totalFavourites = $totalFavourites[0]['users_count_fvr']; $isFavourite = $userFavouritesModel->checkIfContentIsUsersFavourite($id, $auth->getIdentity()->user_id); /* * favouritemethod comes from parameters sent by * ajax function (ajaxLoad_favourite(method)) in index.phtml in /view/. * this function gets parameter "method" (add/remove) from onClick event that is in index.ajax.phtml. * if this onClick event is activated by clicking "heart" (icon_fav_on/off) icon in content view page, * it runs the ajaxLoad_favourite(method) function which sends parameter "favourite" (add/remove) to * this viewController which then handles the adding or removing the content from favourites. */ if ($favouriteMethod != "NONE" && $auth->hasIdentity()) { $favouriteUserId = $auth->getIdentity()->user_id; //If favourite method was "add", then add content to user favourites if ($favouriteMethod == "add" && !$isFavourite) { if ($userFavouritesModel->addContentToFavourites($id, $favouriteUserId)) { $this->view->favouriteMethod = $favouriteMethod; } else { $this->flash('favourite-adding-failed', $baseUrl . '/en/msg'); } } elseif ($favouriteMethod == "remove" && $isFavourite) { if ($userFavouritesModel->removeUserFavouriteContent($id, $favouriteUserId)) { $this->view->favouriteMethod = $favouriteMethod; } else { $this->flash('favourite-removing-failed', $baseUrl . '/en/msg'); } } else { unset($favouriteMethod); } } $favourite = array('total_favourites' => $totalFavourites, 'is_favourite' => $isFavourite); $languagesModel = new Default_Model_Languages(); $languageName = $languagesModel->getLanguageByLangCode($contentData['language_cnt']); $gtranslateLangPair = $this->gtranslate->getLangPair(); // get content tags - functions returns names as well // needs updating to proper MVC? $contentHasTagModel = new Default_Model_ContentHasTag(); $tags = $contentHasTagModel->getContentTags($id); //echo "<pre>"; print_r($tags); echo "</pre>"; die; // get content links, to be implemented $links = array(); // Get all content campaigns $campaignHasContentModel = new Default_Model_CampaignHasContent(); $campaigns = $campaignHasContentModel->getContentCampaigns($id); // This functionality needs looking over (code and general idea) // get content family (array of children, parents and siblings) $contentHasContentModel = new Default_Model_ContentHasContent(); $family = $contentHasContentModel->getContentFamilyTree($id); // split family array to child, parent and sibling arrays (full content) $children = array(); $children_siblings = array(); if (isset($family['children'])) { foreach ($family['children'] as $child) { $contenttypeid = $contentModel->getContentTypeIdByContentId((int) $child); $contenttype = $contentTypesModel->getTypeById($contenttypeid); if ($contenttype == "idea") { $children[] = $contentModel->getDataAsSimpleArray((int) $child); } else { $children_siblings[] = $contentModel->getDataAsSimpleArray((int) $child); } // $i++; } } $parents = array(); $parent_siblings = array(); if (isset($family['parents'])) { foreach ($family['parents'] as $parent) { $contenttypeid = $contentModel->getContentTypeIdByContentId((int) $parent); $contenttype = $contentTypesModel->getTypeById($contenttypeid); if ($contenttype == "idea") { $parents[] = $contentModel->getDataAsSimpleArray((int) $parent); } else { $parent_siblings[] = $contentModel->getDataAsSimpleArray((int) $parent); } } } // Here we get the rival solutions for a solution $rivals = array(); if ($contentType == "idea" && isset($family['parents'])) { $i = 0; // First here is checked the parents of this solution (=the problem // or the future info) foreach ($family['parents'] as $parent) { // Get the family of the problem or future info $parents_family = $contentHasContentModel->getContentFamilyTree((int) $parent); // Get the children of the problem or future info if (isset($parents_family['children'])) { // Going through the children foreach ($parents_family['children'] as $parent_child) { // Those children are rivals which are not this solution // which is currently viewed if ((int) $parent_child != $id) { $rivals[$i] = $contentModel->getDataAsSimpleArray((int) $parent_child); } } } $i++; } } // get comments data // $commentList = $comment->getAllByContentId($id, $page, $count); $commentList = $comment->getCommentsByContent($id); $commentsSorted = array(); $this->getCommentChilds($commentList, $commentsSorted, 0, 0, 3); // Get total comment count $commentCount = $comment->getCommentCountByContentId($id); // Calculate total page count $pageCount = ceil($commentCount / $count); // Custom pagination to fix memory error on large amount of data $paginator = new Zend_View(); $paginator->setScriptPath('../application/views/scripts'); $paginator->pageCount = $pageCount; $paginator->currentPage = $page; $paginator->pagesInRange = 10; // get content industries -- will be updated later. $cntHasIndModel = new Default_Model_ContentHasIndustries(); $hasIndustry = $cntHasIndModel->getIndustryIdOfContent($id); $industriesModel = new Default_Model_Industries(); $industriesArray = $industriesModel->getAllContentIndustryIds($hasIndustry); // roll values to an array /*$industries = array(); foreach ($industriesArray as $industry) { $value = $industriesModel->getNameById($industry); // $industriesModel->getNameById($industry); if (!empty($value)) { $industries[] = $value; } }*/ // Check if and when the content is modified and if its more than 10minutes ago add for the view $dateCreated = strtotime($contentData['created_cnt']); $dateModified = strtotime($contentData['modified_cnt']); $modified = 0; if (($dateModified - $dateCreated) / 60 > 10) { $modified = $contentData['modified_cnt']; } // Inject data to view $this->view->files = $files; $this->view->id = $id; $this->view->userImage = $userImage; $this->view->commentPaginator = $paginator; $this->view->commentData = $commentsSorted; $this->view->user_can_comment = $user_can_comment; $this->view->user_can_rate = $user_can_rate; $this->view->contentData = $contentData; $this->view->modified = $modified; $this->view->userData = $userData; $this->view->moreFromUser = $moreFromUser; $this->view->relatedContents = $relatedContents; $this->view->views = $views; $this->view->rating = $rating; $this->view->languageName = $languageName; $this->view->gtranslateLangPair = $gtranslateLangPair; $this->view->tags = $tags; $this->view->links = $links; $this->view->parents = $parents; $this->view->parent_siblings = $parent_siblings; $this->view->children = $children; $this->view->children_siblings = $children_siblings; $this->view->rivals = $rivals; $this->view->comments = $commentCount; $this->view->contentType = $contentType; $this->view->count = $count; $this->view->campaigns = $campaigns; //$this->view->favourite = $favourite; // Inject title to view $this->view->title = $this->view->translate('index-home') . " - " . $contentData['title_cnt']; }
/** * removeContent * Removes specified content from the database and all related stuff * * @param int id_cnt The id of content to be removed * @return boolean array $contentRemoveChecker * @author Mikko Korpinen */ public function removeContentAndDepending($id_cnt = 0) { $contentRemoveChecker = array('removeContentFromContent' => true, 'removeContentFromFutureinfoClasses' => true, 'removeContentFromIndustries' => true, 'removeContentFromInnovationTypes' => true, 'removeContentFromRelatedCompanies' => true, 'removeContentRelatedCompanies' => true, 'removeContentFromTags' => true, 'removeContentTags' => true, 'removeContentFromUser' => true, 'removeContentViews' => true, 'removeContentFlags' => true, 'removeContentCommentFlags' => true, 'removeContentRatings' => true, 'removeContentFiles' => true, 'removeUserFromFavorites' => true, 'removeContent' => true, 'removeContentComments' => true); // cnt_has_cnt $cntHasCnt = new Default_Model_ContentHasContent(); if (!$cntHasCnt->removeContentFromContents($id_cnt)) { $contentRemoveChecker['removeContentFromContent'] = false; } // cnt_has_fic $cntHasFic = new Default_Model_ContentHasFutureinfoClasses(); if (!$cntHasFic->removeFutureinfoClassesFromContent($id_cnt)) { $contentRemoveChecker['removeContentFromFutureinfoClasses'] = false; } // cnt_has_grp // Not used? // cnt_has_ind $cntHasInd = new Default_Model_ContentHasIndustries(); if (!$cntHasInd->removeIndustriesFromContent($id_cnt)) { $contentRemoveChecker['removeContentFromIndustries'] = false; } // cnt_has_ivt $cntHasIvt = new Default_Model_ContentHasInnovationTypes(); if (!$cntHasIvt->removeInnovationTypesFromContent($id_cnt)) { $contentRemoveChecker['removeContentFromInnovationTypes'] = false; } // related_companies_rec and cnt_has_rec $cntHasRec = new Default_Model_ContentHasRelatedCompany(); $recs = $cntHasRec->getContentRelComps($id_cnt); $rec = new Default_Model_RelatedCompanies(); foreach ($recs as $id_rec) { if (!$cntHasRec->checkIfOtherContentHasRelComp($id_rec['id_rec'], $id_cnt)) { if (!$rec->removeRelComp($id_rec['id_rec'])) { $contentRemoveChecker['removeRelatedCompanies'] = false; } } } if (!$cntHasRec->removeContentRelComps($id_cnt)) { $contentRemoveChecker['removeContentFromRelatedCompanies'] = false; } // tags_tag and cnt_has_tag $cntHasTag = new Default_Model_ContentHasTag(); $tags = $cntHasTag->getContentTags($id_cnt); $tag = new Default_Model_Tags(); foreach ($tags as $id_tag) { if (!$cntHasTag->checkIfOtherContentHasTag($id_tag['id_tag'], $id_cnt)) { if (!$tag->removeTag($id_tag['id_tag'])) { $contentRemoveChecker['removeTags'] = false; } } } if (!$cntHasTag->removeContentTags($id_cnt)) { $contentRemoveChecker['removeContentFromTags'] = false; } // cnt_has_usr $cntHasUsr = new Default_Model_ContentHasUser(); if (!$cntHasUsr->removeUserFromContent($id_cnt)) { $contentRemoveChecker['removeContentFromUser'] = false; } // cnt_publish_times_pbt // Not used? // cnt_views_vws $cntWiewsVws = new Default_Model_ContentViews(); if (!$cntWiewsVws->removeContentViews($id_cnt)) { $contentRemoveChecker['removeContentViews'] = false; } // Flags from content_flags_cfl $contentflagmodel = new Default_Model_ContentFlags(); $cnfl_ids = $contentflagmodel->getFlagsByContentId($id_cnt); if (is_array($cnfl_ids)) { foreach ($cnfl_ids as $cfl_id) { if (!$contentflagmodel->removeFlag($cfl_id)) { $contentRemoveChecker['removeContentFlags'] = false; } } } // Flags from comment_flags_cfl $commentflagmodel = new Default_Model_CommentFlags(); $cmfl_ids = $commentflagmodel->getFlagsByContentId($id_cnt); if (is_array($cmfl_ids)) { foreach ($cmfl_ids as $cfl_id) { if (!$commentflagmodel->removeFlag($cfl_id)) { $contentRemoveChecker['removeContentCommentFlags'] = false; } } } // content_ratings_crt $contentRatingRct = new Default_Model_ContentRatings(); if (!$contentRatingRct->removeContentRatings($id_cnt)) { $contentRemoveChecker['removeContentRatings'] = false; } // files_fil $files = new Default_Model_Files(); if (!$files->removeContentFiles($id_cnt)) { $contentRemoveChecker['removeContentFiles'] = false; } // links_lnk // Not used? // usr_has_fvr $usrHasFvr = new Default_Model_UserHasFavourites(); if (!$usrHasFvr->removeAllContentFromFavouritesByContentId($id_cnt)) { $contentRemoveChecker['removeUserFromFavorites'] = false; } // contents_cnt $contentmodel = new Default_Model_Content(); if (!$contentmodel->removeContent($id_cnt)) { $contentRemoveChecker['removeContent'] = false; } // coments_cmt $commentmodel = new Default_Model_Comments(); if (!$commentmodel->removeAllContentComments($id_cnt)) { $contentRemoveChecker['removeContentComments'] = false; } return $contentRemoveChecker; }
/** * addContent * * Add content. * * @param array $data */ public function addContent($data) { $auth = Zend_Auth::getInstance(); // Create a new row $content = $this->createRow(); //Zend_Debug::dump($content, $label=null, $echo=true); // Set data to row $content->id_cty_cnt = $data['content_type']; $content->title_cnt = htmlspecialchars($data['content_header']); $content->lead_cnt = htmlspecialchars($data['content_textlead']); $content->body_cnt = htmlspecialchars($data['content_text']); if (isset($data['content_research'])) { $content->research_question_cnt = htmlspecialchars($data['content_research']); } if (isset($data['content_opportunity'])) { $content->opportunity_cnt = htmlspecialchars($data['content_opportunity']); } if (isset($data['content_threat'])) { $content->threat_cnt = htmlspecialchars($data['content_threat']); } if (isset($data['content_solution'])) { $content->solution_cnt = htmlspecialchars($data['content_solution']); } $content->references_cnt = $data['content_references']; $content->published_cnt = $data['publish']; $content->created_cnt = new Zend_Db_Expr('NOW()'); $content->modified_cnt = new Zend_Db_Expr('NOW()'); $content->language_cnt = $data['content_language']; //Zend_Debug::dump($content, $label=null, $echo=true); die(); /*$query = "INSERT INTO contents_cnt (id_cty_cnt, id_ind_cnt, title_cnt, lead_cnt, body_cnt, views_cnt, published_cnt, created_cnt, modified_cnt) "; $query .= "VALUES (".$data['content_type'].", ".$data['content_industry_id'].", '".strip_tags($data['content_header'])."', '".strip_tags($data['content_textlead'])."', '"; $query .= strip_tags($data['content_text'])."', 0, 0, ".new Zend_Db_Expr('NOW()').", ".new Zend_Db_Expr('NOW()').")";*/ //Zend_Debug::dump($query, $label=null, $echo=true); die(); /*mysql_connect("localhost", "root", "lollero"); mysql_query($query); echo mysql_error(); mysql_close(); die();*/ if (!$content->save()) { $return = false; } else { // If save was successful, content id is returned, because it is needed // when redirecting $return = $content->id_cnt; /*if($_FILES['content_file_upload']['size'] != 0) { $files = new Default_Model_Files(); $files->newFile($content->id_cnt, $auth->getIdentity()->user_id); }*/ $filesModel = new Default_Model_Files(); for ($i = 1; $i < count($data['files']['name']); $i++) { $files = $data['files']; $file['name'] = $files['name'][$i]; $file['type'] = $files['type'][$i]; $file['tmp_name'] = $files['tmp_name'][$i]; $file['error'] = $files['error'][$i]; $file['size'] = $files['size'][$i]; $filesModel->newFile($content->id_cnt, $data['User']['id_usr'], $file); } } // What is this used for //$contentTypes = new Default_Model_ContentTypes(); //$content_type = $contentTypes->getTypeById($data['content_type']); if ($data['content_relatesto_id'] != 0) { $contentHasContent = new Default_Model_ContentHasContent(); $contentHasContent->addContentToContent($data['content_relatesto_id'], $content->id_cnt); } // Add user to content $contentHasUser = new Default_Model_ContentHasUser(); $contentHasUser->addUserToContent($content->id_cnt, $data['User']['id_usr'], 1); // Check if user has given keywords if (!empty($data['content_keywords'])) { $tagModel = new Default_Model_Tags(); $tagModel->addTagsToContent($content->id_cnt, $data['content_keywords']); // Go through all given keywords // This should be in Tags model /* foreach($data['content_keywords'] as $tag) { $tagRow = new Default_Model_Tags(); $tag = strip_tags($tag); // Check if given keyword does not exists in database if($tagRow->tagExists($tag)) { // Create new keyword $tag = $tagRow->createTag($tag); } else { // Get keyword $tag = $tagRow->getTag($tag); } // end else // echo '<pre>';echo $tag->id_tag.' '.$content->id_cnt;echo '</pre>'; //die(); // Add keywords to content $contentHasTag = new Default_Model_ContentHasTag(); $contentHasTag->addTagToContent($tag->id_tag, $content->id_cnt); } // end foreach */ } // end if // Check if user has given related companies if (!empty($data['content_related_companies'])) { $recModel = new Default_Model_RelatedCompanies(); $recModel->addRelatedCompaniesToContent($content->id_cnt, $data['content_related_companies']); // Go through all given related companies // FIX: This should be in RelatedCompanies model /*foreach($data['content_related_companies'] as $relComp) { $relCompRow = new Default_Model_RelatedCompanies(); $relComp = strip_tags($relComp); // Check if given related company does not exists in database if($relCompRow->relCompExists($relComp)) { // Create new related company $relComp = $relCompRow->createRelComp($relComp); } else { // Get related company $relComp = $relCompRow->getRelComp($relComp); } // end else // echo '<pre>';echo $tag->id_tag.' '.$content->id_cnt;echo '</pre>'; //die(); // Add related companies to content $contentHasRelatedCompany = new Default_Model_ContentHasRelatedCompany(); $contentHasRelatedCompany->addRelCompToContent($relComp->id_rec, $content->id_cnt); } // end foreach */ } // end if // Check if user has given campaigns if (!empty($data['content_campaigns'])) { $cmpModel = new Default_Model_Campaigns(); $cmpModel->addCampaignsToContent($content->id_cnt, $data['content_campaigns']); // Go through all given campaigns // FIX: This should be in Campaigns model /*foreach($data['content_campaigns'] as $campaign) { $campaignRow = new Default_Model_Campaigns(); $campaign = strip_tags($campaign); // Check if given campaign does not exists in database if($campaignRow->campaignExists($campaign)) { // Create new campaign $campaign = $campaignRow->createCampaign($campaign); } else { // Get campaign $campaign = $campaignRow->getCampaign($campaign); } // end else // echo '<pre>';echo $tag->id_tag.' '.$content->id_cnt;echo '</pre>'; //die(); // Add related companies to content $contentHasCampaign = new Default_Model_ContentHasCampaign(); $contentHasCampaign->addCampaignToContent($campaign->id_cmp, $content->id_cnt); } // end foreach */ } // end if // Add industry to content $contentHasIndustry = new Default_Model_ContentHasIndustries(); if (isset($data['content_industry'])) { $id_ind = 0; if ($data['content_class'] != 0) { $id_ind = $data['content_class']; } elseif ($data['content_group'] != 0) { $id_ind = $data['content_group']; } elseif ($data['content_division'] != 0) { $id_ind = $data['content_division']; } elseif ($data['content_industry'] != 0) { $id_ind = $data['content_industry']; } } if ($id_ind != 0) { $contentHasIndustry->addIndustryToContent($content->id_cnt, $id_ind); } // Add future info classification to content if (isset($data['content_finfo_class'])) { if ($data['content_finfo_class'] != 0) { $contentHasFutureinfoClass = new Default_Model_ContentHasFutureinfoClasses(); $contentHasFutureinfoClass->addFutureinfoClassToContent($content->id_cnt, $data['content_finfo_class']); } } // Add innovation type to content if (isset($data['innovation_type'])) { if ($data['innovation_type'] != 0) { $contentHasInnovationType = new Default_Model_ContentHasInnovationTypes(); $contentHasInnovationType->addInnovationTypeToContent($content->id_cnt, $data['innovation_type']); } } return $return; }